﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Reviewer.Entities.Services
{

    /// <summary>
    /// Screenshot service for games
    /// </summary>
    [ServiceContract(Namespace = "Reviewer.Services")]
    public interface IGameScreenshotService : IDisposable
    {
        ICollection<GameScreenshotSearchResult> Search(int topCount);
        /// <summary>
        /// Finds the specified game.
        /// </summary>
        /// <param name="gameTitle">The game title.</param>
        /// <param name="gameFormat">The game format.</param>
        /// <param name="gameGenre">The game genre.</param>
        /// <param name="reviewAuthor">The review author.</param>
        /// <param name="distributor">The distributor.</param>
        /// <returns></returns>
        [OperationContract]
        ICollection<GameScreenshotSearchResult> Search(String gameTitle, Int32? gameFormat, Int32? gameGenre, Int32? maxResults);

        /// <summary>
        /// Finds the specified screenshot by id.
        /// </summary>
        /// <param name="screenshotId">The screenshot id.</param>
        /// <returns></returns>
        [OperationContract]
        GameScreenshot Find(int screenshotId);

        /// <summary>
        /// Finds the specified screenshot by game id.
        /// </summary>
        /// <param name="gameId">The game id.</param>
        /// <returns></returns>
        [OperationContract]
        ICollection<GameScreenshot> Find(Guid gameId);

        /// <summary>
        /// Finds the news related screenshots.
        /// </summary>
        /// <param name="newsId">The news id.</param>
        /// <returns></returns>
        [OperationContract]
        ICollection<GameScreenshot> FindNewsRelated(int newsId);

    }
}
